package com.wyh.mapper.g3mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wyh.domain.po.g3po.*;
import com.wyh.domain.vo.g3vo.ChargingVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.sql.Timestamp;
import java.util.List;

@Mapper
public interface G3ChargingMapper extends BaseMapper<Charging> {


    List<Charging> findList(@Param("id") Integer id);


    //通过条件查询，分页
    List<ChargingVo> findListByCondition(@Param("propertyname") String propertyname,//楼盘名称
                                         @Param("resourcename") String resourcename,//资源名称
                                         @Param("billingitemsname") String billingitemsname,//计费项目
                                         @Param("billingnature") Integer billingnature,//计费性质
                                         @Param("frontupdatetime") Timestamp frontupdatetime,//前修改时间
                                         @Param("laterupdatetime") Timestamp laterupdatetime,//后修改时间
                                         @Param("minreceivable") int minreceivable,//最小应收金额
                                         @Param("maxreceivable") int maxreceivable,//最大应收金额
                                         @Param("customername") String customername,//客户名称
                                         @Param("state") Integer state,//状态，0待入账、1已入账、2已退回
                                         @Param("startmonth") Integer startmonth,//计费开始时间
                                         @Param("endmonth") Integer endmonth//计费结束时间


    );


    //查询组织  组织名，组织id（通过楼栋，园区拿id）
    List<G3Organization> findOrganizationName(String organizationName);

    //查询园区  出现园区>楼盘 得到楼盘的  楼盘 id N
    List<G3Project> findByOrganizationByProjectId(int id);

    //查询出现园区>楼盘   园区  id Y
    boolean findByOrganizationByOId(int id);

    //通过楼盘   组织id 楼盘名   楼盘  id name Y
    List<G3Project> findByOrganizationNameAndProjectId(String name, int id);

    //查询楼栋   楼盘id 楼栋名
    List<G3BuildingUnit> findBuildingUnitByNameAndId(String name, int id);

    //查询楼层    楼层名  上级id
    List<G3Layer> findListByNameAndParentId(String name, int id);

    //查询资源（房屋） 通过资源名 资源id
    boolean findResourceByNameAndid(String name, int id);












    //通过园区0r楼盘父id找id
    Integer findOrganizationId(String name);

    //通过名字和组织id查id（园区、楼盘）
    Integer findPId(String name, int id);

    //通过名字和id查id（组团、楼栋、单元）
    Integer findBId(String name,int id);

    //通过名字和id查楼层id  楼层
    Integer findLId(String name,int id);

    //通过名字和id查 房屋
    Integer findRId(String name,int id);











    //    查询三表id
    int findThreeMeter(String name, String number);

    //插入三表抄表表


    //查询楼盘名称
    List<String> findPropertyName();

    //查询资源名称
    List<String> findResourceName();

    //查询计费项目名称
    List<String> findBillingItemsName();


    int insertCharging(Charging charging);


    Charging findById(@Param("id") Integer id);

    //更新charging状态
    void updateChargingState(Charging charging);

    /**
     * 获取所有未入账的记录
     */
    List<Charging> findAllUnbilled();

    List<Charging> findAllByState(@Param("state") int state);

    List<Integer> getDistinctContractIds(@Param("recordIds") List<Integer> recordIds);

    List<Charging> findByContractidAndState(@Param("contractId") Integer contractId, @Param("state") int state);


    //更新charging
    void updateCharging(Charging charging);
}
